//! 调试币本位合约API响应
//! 
//! 专门用于调试币本位合约API的响应格式

use binance_sdk_unified::{
    client::BinanceClientBuilder, ProductType, Environment, Result,
};

#[tokio::main]
async fn main() -> Result<()> {
    // 初始化日志，设置为debug级别以查看原始响应
    tracing_subscriber::fmt()
        .with_max_level(tracing::Level::DEBUG)
        .init();
    
    // 设置环境变量确保显示所有日志
    std::env::set_var("RUST_LOG", "debug");

    println!("🔍 调试币本位合约API响应");
    println!("==========================");
    println!("设置debug日志级别以查看原始响应数据");
    println!();

    // 创建币本位合约客户端
    let client = BinanceClientBuilder::new(
        "demo_api_key".to_string(),
        "demo_secret_key".to_string(),
        ProductType::CoinM,
    )
    .environment(Environment::Demo)
    .timeout(30)
    .retry_count(3)
    .build()?;

    println!("📋 客户端配置:");
    println!("   产品类型: {:?}", ProductType::CoinM);
    println!("   环境: Demo");
    println!("   REST URL: {}", client.config().rest_base_url());
    println!("   WebSocket URL: {}", client.config().ws_base_url());
    println!("   API前缀: {}", client.config().product_type.base_api_prefix());

    // 获取交易对列表
    println!("\n📊 获取交易对列表...");
    match client.rest().market().get_exchange_info().await {
        Ok(exchange_info) => {
            println!("   ✅ 交易对数量: {}", exchange_info.symbols.len());
            if !exchange_info.symbols.is_empty() {
                let first_symbol = &exchange_info.symbols[0].symbol;
                println!("   🎯 第一个交易对: {}", first_symbol);
                
                // 测试24小时价格统计
                println!("\n💰 测试24小时价格统计...");
                println!("   📡 请求URL: {}{}", client.config().rest_base_url(), format!("/dapi/v1/ticker/24hr?symbol={}", first_symbol));
                
                match client.rest().market().get_24hr_ticker(Some(first_symbol)).await {
                    Ok(ticker) => {
                        println!("   ✅ {} 24小时价格: {}", first_symbol, ticker.last_price);
                    },
                    Err(e) => {
                        println!("   ❌ 24小时价格统计失败: {}", e);
                        println!("   💡 查看上面的debug日志了解原始响应格式");
                    }
                }
                
                // 测试最新价格
                println!("\n💲 测试最新价格...");
                println!("   📡 请求URL: {}{}", client.config().rest_base_url(), format!("/dapi/v1/ticker/price?symbol={}", first_symbol));
                
                match client.rest().market().get_price(Some(first_symbol)).await {
                    Ok(price_info) => {
                        println!("   ✅ {} 最新价格: {}", first_symbol, price_info.price);
                    },
                    Err(e) => {
                        println!("   ❌ 最新价格失败: {}", e);
                        println!("   💡 查看上面的debug日志了解原始响应格式");
                    }
                }
            }
        },
        Err(e) => {
            println!("   ❌ 获取交易对信息失败: {}", e);
        }
    }

    println!("\n🎉 调试完成！");
    println!("==============");
    println!("✅ 已记录原始API响应数据");
    println!("✅ 请查看上面的debug日志分析响应格式");
    println!("✅ 可以根据响应格式调整序列化逻辑");
    
    tracing::info!("[DEBUG_COINM] 调试完成");

    Ok(())
}
